package cn.lghuntfor.commons.common.utils;

import java.math.BigInteger;

/**
 * 数值型的进制转换工具类
 * @author liaogang
 * @date 2021/1/12 11:54
 */
public class NumberConvert {

    /**
     * 将int型数值转换化为指定位进制的字符串
     * radix取值 2-36
     * @author liaogang
     * @date 2021/1/12 13:37
     * @param num
     * @param radix 取值 2-36
     * @return java.lang.String
     */
    public static String convert(int num, int radix) {
        return new BigInteger(String.valueOf(num)).toString(radix).toUpperCase();
    }

    /**
     * 将int型数值转换化为指定位进制的字符串
     * radix取值 2-36
     * @author liaogang
     * @date 2021/1/12 13:37
     * @param num
     * @param radix 取值 2-36
     * @return java.lang.String
     */
    public static String convert(long num, int radix) {
        return new BigInteger(String.valueOf(num)).toString(radix).toUpperCase();
    }

    /**
     * 将BigInteger型数值转换化为指定位进制的字符串
     * radix取值 2-36
     * @author liaogang
     * @date 2021/1/12 13:37
     * @param num
     * @param radix 取值 2-36
     * @return java.lang.String
     */
    public static String convert(BigInteger num, int radix) {
        return num.toString(radix).toUpperCase();
    }

    /**
     * 将指定进制位的数值字符串转换为BigInteger
     * radix取值 2-36
     * @author liaogang
     * @date 2021/1/12 13:38
     * @param numStr
     * @param radix
     * @return java.math.BigInteger
     */
    public static BigInteger toBigInteger(String numStr, int radix) {
        return new BigInteger(numStr, radix);
    }

    /**
     * 将指定进制位的数值字符串转换为 int
     * radix取值 2-36
     * @author liaogang
     * @date 2021/1/12 13:38
     * @param numStr
     * @param radix 取值 2-36
     * @return int
     */
    public static int toInt(String numStr, int radix) {
        return toBigInteger(numStr, radix).intValue();
    }

    /**
     * 将指定进制位的数值字符串转换为 long
     * radix取值 2-36
     * @author liaogang
     * @date 2021/1/12 13:38
     * @param numStr
     * @param radix 取值 2-36
     * @return long
     */
    public static long toLong(String numStr, int radix) {
        return toBigInteger(numStr, radix).longValue();
    }

}
